#ifndef _SERVER_H_
#define _SERVER_H_
#include <stdio.h>
#include <stdio.h>
#include <sys/types.h>          /* See NOTES */
#include <sys/socket.h>
#include <string.h>
#include <netinet/in.h>
#include <sys/epoll.h>
#include <sys/time.h>
#include <unistd.h>
#include <stdlib.h>
#include "sqlite3.h"
enum FLAG
{
	ERROR = -1 , 
	OK
};
#define BUF_SIZE 100  // 缓冲区的长度
#define FILEPATH_MAX 100 // 文件路径的长度
#define DATABASENAME_SIZE 30 // 数据库名称的最大长度
struct Polldata
{
   struct epoll_event events[BUF_SIZE];
   int size;
}list;
/*
  函数名： loginCheck
  函数功能：判断用户账户信息表中该用户信息是否正确
  函数参数:
          buf : 从客户端收到的用户登录信息
		  pdb:打开的数据库句柄
		  tbName:用户信息数据表的名称
		  currentUser:用来保存客户端输入的当前用户的名称
  返回值：
         0：验证成功
		 -1：验证失败
*/
int loginCheck( char *buf , sqlite3 *pdb , char *tbName , char *currentUser );
/*
   函数名：userRegistration
   函数功能：完成新用户的注册
   参数列表：
          buf:从客户端发送过来的账号密码信息
		  pdb:数据库索引
		  tbName:数据表名
   返回值：
        0：注册成功
		-1：注册失败
*/
int userRegistration( char *buf , sqlite3 *pdb , char *tbName );
/*
    函数名: updateUserNickname
	函数功能: 用于给用户设置自己的昵称
	函数参数: 
	         pdb: 指向数据库的索引
			 tbName: 用户信息表名字
			 currentUse: 用户名
			 char *buf:用户名
	函数返回值: 
	        0: 修改成功
			1: 修改失败
*/
int updateUserNickname( sqlite3 *pdb , char *tbName , char *tempbuf );
/*
    函数名: updateUserPasswd
	函数功能: 用于给用户设置自己的昵称
	函数参数: 
	         pdb: 指向数据库的索引
			 tbName: 用户信息表名字
			 char *buf:用户名
	函数返回值: 
	        0: 修改成功
*/
int updateUserPasswd( sqlite3 *pdb , char *tbName , char *tempbuf );
/*
   函数名: addNewPost
   函数功能:将客户端提交过来的账目信息存入数据表中，并将表中的信息反馈给客户端，显示即可
   函数参数:
            username:当前的用户名，我们打算建一个和用户名项目的数据库
			num:该用户当前记账的天数
			buf:从客户端传过来的当天的账目数据
	函数返回值:
	        0:成功
			-1:失败
*/
int addNewPost( char *buff );
/*
   函数名： userinfoSearch
   函数功能：查找用户信息表中用户的账目信息
   函数参数:
        buf:客户端账号名称信息
    返回值：
	    0：成功
		-1：失败
*/
int userinfoSearch( char *buf  );
void printHello();
#endif